﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sistema.Modelo;
using Sistema.Dao;
using System.Data.SqlClient;
using Sistema.Visao.Pessoa.Cidade;
using Sistema.Visao.Pessoa.Cliente;

namespace Sistema.Visao.Pessoa.Endereço
{//abre o namespace
    public partial class formEndereco : Form
    {//abre o form
        //construtor padrão do sistema
        public formEndereco()
        {
            InitializeComponent();
        }
        //construtor lincado com formCliente
        public formEndereco(formCliente cli, Boolean tipo)
        {
            InitializeComponent();
            clientedados = cli;
            tipodeCliente = tipo;
        }

        formCliente clientedados;
        Boolean tipodeCliente = true,tipo;
        EnderecoMod mod = new EnderecoMod();// variavel da classe modelo
        EnderecoDao dao = new EnderecoDao();// variavel da classe dao
        int codigoEndereco,codigoCidade,codigoBairro,linha;       
        string endereco,logradouro,enderecoCompleto,cep;
        
       
    
        public void pegadados()
        {//abre o pegadados
          

            if (dgEndereco.RowCount == 0)//confere se grid está vazio
            {//abre if
                //se a tabela estiver vazia exibir label com msg e desabilitar botoes
                cbTipoPesquisa.Enabled = false;
                cbCampoPesquisa.Enabled = false;
                tbCampoPesquisar.Enabled = false;
                btPesquisar.Enabled = false;
                btAdicionar.Enabled = false;
                lbMsg.Visible = true;
                dgEndereco.Visible = false;
            }//fecha if
            else
            {//abre else
                //se nao pega dados da tabela e habilita botoes
                //habilita e desabilita itens
                cbTipoPesquisa.Enabled = true;
                cbCampoPesquisa.Enabled = true;
                tbCampoPesquisar.Enabled = true;
                btPesquisar.Enabled = true;
                btAdicionar.Enabled = true;
                dgEndereco.Visible = true;
                lbMsg.Visible = false;
                //pega valores
                linha = dgEndereco.CurrentRow.Index;
                endereco = dgEndereco.Rows[linha].Cells[5].Value.ToString();
                codigoEndereco = Convert.ToInt16(dgEndereco.Rows[linha].Cells[0].Value.ToString());//pegando codigo para realizara alteraçao
                cep = dgEndereco.Rows[linha].Cells[1].Value.ToString();
                codigoCidade = Convert.ToInt16(dgEndereco.Rows[linha].Cells[2].Value.ToString());
                codigoBairro = Convert.ToInt16(dgEndereco.Rows[linha].Cells[3].Value.ToString());
                logradouro = dgEndereco.Rows[linha].Cells[4].Value.ToString();
                enderecoCompleto = dgEndereco.Rows[linha].Cells[6].Value.ToString();

            }//fecha o else
        }//fecha o pegadados

        public void AtualizarGrid(int Selecao, String Busca)//MEtodo para carregar o data Grid atraves de coneção com o banco utilizando a camada dao
        {//abre atualizagrid

            dao.SelecionarEndereco(Busca, Selecao);
            SqlDataAdapter i = dao.getSelect();
            DataTable da = new DataTable();
            i.Fill(da);
            dgEndereco.DataSource = da;

            //altera o nome dos campos da coluna
            dgEndereco.Columns[0].HeaderText = "Código";
            dgEndereco.Columns[1].HeaderText = "CEP";
            dgEndereco.Columns[4].HeaderText = "Logradouro";
            dgEndereco.Columns[5].HeaderText = "Endereço";
            dgEndereco.Columns[6].HeaderText = "Endereço Completo";
            //define o tamanho das colunas do grid
            dgEndereco.Columns[0].Width = 50;
            dgEndereco.Columns[1].Width = 60;
            dgEndereco.Columns[4].Width = 100;
            dgEndereco.Columns[5].Width = 250;
            dgEndereco.Columns[6].Width = 300;
            //colocando os valores da coluna data_de_cadastro invisivel no grid
            dgEndereco.Columns[2].Visible = false;
            dgEndereco.Columns[3].Visible = false;
            dgEndereco.Columns[7].Visible = false;
        }//fecha atualizaGrid

            private void formEndereco_Load(object sender, EventArgs e)
        {//abre o load
            if (tipodeCliente == true)
            {//abre o if
                AtualizarGrid(0, "");
                pegadados();
                cbCampoPesquisa.SelectedIndex = 1;
                cbTipoPesquisa.SelectedIndex = 0;
                btAdicionar.Visible = false;
            }//fecha o if
            else
            {//abre o else
                AtualizarGrid(0, "");
                pegadados();
                cbCampoPesquisa.SelectedIndex = 1;
                cbTipoPesquisa.SelectedIndex = 0;
                btAdicionar.Visible = true;
            }//fecha o else
           
        }//fecha o load

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //botao de cadastro
            tipo = true;
            dataEndereco vai = new dataEndereco(this, tipo);
            vai.Show();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(cep);
            //botao de alteração
            tipo = false;
            dataEndereco vai = new dataEndereco(this, tipo, endereco, codigoEndereco, cep, codigoCidade, codigoBairro, logradouro, enderecoCompleto);
            vai.Show();
        }

        private void btAddEndPessoa_Click(object sender, EventArgs e)
        {
            //passa valores para form cliente
            clientedados.tbEnderecoJuridico.Text = endereco;
            clientedados.codEndereco = codigoEndereco;
            this.Hide();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            if (cbCampoPesquisa.SelectedIndex == 0)
            {//abre o if 1
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {//abre o if 1.1
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(1, tbCampoPesquisar.Text);
                }//fecha o if 1.1
                else if (cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {//abre o if 1.2
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(2, tbCampoPesquisar.Text);
                }//fecha o if 1.2
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {//abre o if 1.3
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(3, tbCampoPesquisar.Text);
                }//fecha o if 1.3
            }//fecha o if 1
            else if (cbCampoPesquisa.SelectedIndex == 1)
            {//abre o if 2
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {//abre o if 2.1
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(4, tbCampoPesquisar.Text);
                }//fecha o if 2.1
                else if (cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {//abre o if 2.2
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(5, tbCampoPesquisar.Text);
                }//fecha o if 2.2
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {//abre o if 2.3
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(6, tbCampoPesquisar.Text);
                }//fecha o if 2.3
            }//fecha o if 2
            else if (cbCampoPesquisa.SelectedIndex == 2)
            {//abre o if 3
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {//abre o if 3.1
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(7, tbCampoPesquisar.Text);
                }//fecha o if 3.1
                else if (cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {//abre o if 3.2
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(8, tbCampoPesquisar.Text);
                }//fecha o if 3.2
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {//abre o if 3.3
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(9, tbCampoPesquisar.Text);
                }//fecha o if 3.3
            }//fecha o if 3
            
        }

        private void btSair_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void dgEndereco_MouseClick(object sender, MouseEventArgs e)
        {
            pegadados();
        }
    }//fecha o form
}//fecha o namespace
